// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S ALL JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++

!function ($) {
  $(function(){
    var $window = $(window)

    // Disable certain links in docs
    $('section [href^=#]').click(function (e) { e.preventDefault() })

    // side bar
    $('.bs-docs-sidenav').affix({
      offset: {
        top: function () { return $window.width() <= 980 ? 290 : 210 },
        bottom: 270
      }
    })

    // make code pretty
    window.prettyPrint && prettyPrint()

    // add-ons
    $('.add-on :checkbox').on('click', function () {
      var $this = $(this),
          method = $this.attr('checked') ? 'addClass' : 'removeClass'
      $(this).parents('.add-on')[method]('active')
    })

    // add tipsies to grid for scaffolding
    if ($('#gridSystem').length) {
      $('#gridSystem').tooltip({
        selector: '.show-grid > div',
        title: function () { return $(this).width() + 'px' }
      })
    }

    // tooltip demo
    $('.tooltip-demo').tooltip({
      selector: "a[rel=tooltip]"
    })

    $('.tooltip-test').tooltip()
    $('.popover-test').popover()

    // popover demo
    $("a[rel=popover]").popover().click(function(e) {
      e.preventDefault()
    })

    // button state demo
    $('#fat-btn').click(function () {
      var btn = $(this)
      btn.button('loading')
      setTimeout(function () { btn.button('reset') }, 3000)
    })

    // carousel demo
    $('#myCarousel').carousel()

    // javascript build logic
    var inputsComponent = $("#components.download input"),
        inputsPlugin = $("#plugins.download input"),
        inputsVariables = $("#variables.download input")

    // toggle all plugin checkboxes
    $('#components.download .toggle-all').on('click', function (e) {
      e.preventDefault()
      inputsComponent.attr('checked', !inputsComponent.is(':checked'))
    })

    $('#plugins.download .toggle-all').on('click', function (e) {
      e.preventDefault()
      inputsPlugin.attr('checked', !inputsPlugin.is(':checked'))
    })

    $('#variables.download .toggle-all').on('click', function (e) {
      e.preventDefault()
      inputsVariables.val('')
    })

    // request built javascript
    $('.download-btn .btn').on('click', function () {
      var css = $("#components.download input:checked").map(function () { return this.value }).toArray(),
          js = $("#plugins.download input:checked").map(function () { return this.value }).toArray(),
          vars = {},
          img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png']

      $("#variables.download input").each(function () {
        $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
      })

      $.ajax({
        type: 'POST',
        url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com',
        dataType: 'jsonpi',
        params: {
          js: js,
          css: css,
          vars: vars,
          img: img
        }
      })
    })
  })

  // Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
  $.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
    var url = opts.url;

    return {
      send: function(_, completeCallback) {
        var name = 'jQuery_iframe_' + jQuery.now(),
            iframe,
            form

        iframe = $('<iframe>').attr('name', name).appendTo('head')

        // GET or POST
        form = $('<form>').attr('method', opts.type).attr('action', url).attr('target', name)

        $.each(opts.params, function(k, v) {
          $('<input>').attr('type', 'hidden').attr('name', k).attr('value', typeof v == 'string' ? v : JSON.stringify(v)).appendTo(form)
        })

        form.appendTo('body').submit()
      }
    }
  })
}(window.jQuery);
